Cloud Resource Manager
組織ポリシー
Cloud Function の世代の制約とかもあるんだ
PubSub メッセージのリージョン制約
図がよい
フォルダで継承していく
継承を拒否できる
フォルダで追加や削除(拒否)もできる
既に違反しているところにポリシーを適用しても止まらない、結果を見て対処する
ドメインの制約とかも、既に許可済みのものは即座にとまることはない、IAM に追加するのを制約する
典型的なユースケース
code: quote
SA のキーを払い出せないようにしたい
➜ iam.disableServiceAccountKeyCreation
Type:Bool
デフォルト SA の自動的な権限割当を無効化したい
➜ iam.automaticIamGrantsForDefaultServiceAccounts
Type:Bool
VPC Peering のピア関係を許可された VPC のみに制限したい
➜ constraints/compute.restrictVpcPeering
Type:List
共有 VPC のサブネット払い出しを許可された プロジェクト のみに制限したい
➜ constraints/compute.restrictSharedVpcSubnetworks
Type:List
リソース ロケーションを許可されたロケーションのみに制限したい
➜ constraints/gcp.resourceLocations
Type:List
constraints/trustedImageProjects
allowedValue & deniedValue にプロジェクトのリストを与える
組織IDを確認する
$ gcloud organizations list
アクセス可能なフォルダ一覧を得る
$ gcloud resource-manager folders list --organization=ID
ただし、組織のトップディレクトリにアクセスできなければ意外と方法がない?
俺は listable でないので困る
$ gcloud projects list --format=json
でプロジェクトと親フォルダ一覧出して
$ gcloud resource-manager folders describe FOLDER_ID
で辿っていってツリーを作ることはできそう
単にアクセス可能なフォルダ一覧を作るだけなら検索 API でできる
query に parent=organization/ID とか入れれば組織直下のものは取れる
組織 > 見えないフォルダ > フォルダ という構造の時は出てこない